-- 秒杀lua脚本

-- 参数列表
-- 拿到优惠券ID
local voucherId = ARGV[1]
-- 拿到订单ID
local userId = ARGV[1]

-- 得到库存的key
local stockKey = "seckill:stock:"..voucherId
-- 得到订单的key
local orderKey = "seckill:order:"..voucherId

-- 执行脚本业务代码

-- 首先判断库存还有没有了
if(tonumber(redis.call('get',stockKey))) then
    -- 库存不足
    return 1
end

-- 在判断该用户有没有下过单
if(redis.call('sismember',orderKey,userId)==1) then
    -- 下过单了
    return 2
end

-- 此时用户还没有下单
-- 1.1 执行扣减库存
redis.call('incrby',stockKey,-1)
-- 1.2 订单存到set集合中
redis.call('sadd',userId)
-- 成功返回0
return 0